package com.cloudwise.service;

import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cloudwise.entity.Menu;

import java.util.List;
import java.util.Set;

/**
 * (Menu)表服务接口
 *
 * @author makejava
 * @since 2021-12-03 09:16:48
 */

public interface MenuService extends IService<Menu> {
    /**
     *
     * @param
     * @return java.util.List<cn.hutool.core.lang.tree.TreeNode < java.lang.String>>
     * @author 高冷
     * @description:获取所有的菜单,用于树表格结构
     * @date 2021/12/3 10:37
     */
    List<Tree<String>>  getTreeMenu() throws IllegalAccessException;
    /**
     *
     * @param
     * @return java.util.List<cn.hutool.core.lang.tree.Tree < java.lang.String>>
     * @author 高冷
     * @description:获取所有的菜单,用于树结构
     * @date 2021/12/6 14:32
     */
    List<Tree<String>> getLayuiTree();
    /**
     *
     * @param loginName
     * @return java.util.List<com.cloudwise.entity.Menu>
     * @author 高冷
     * @description:根据用户名查找其所拥有的菜单
     * @date 2021/12/6 14:42
     */
    List<Tree<String>> getAllMenuByLoginName(String loginName);
    /**
     *
     * @param loginName
     * @return java.util.Set<java.lang.String>
     * @author 高冷
     * @description:根据用户名查找其所有的权限
     * @date 2021/12/7 9:26
     */
    Set<String> getAllPermsByLoginName(String loginName);
    /**
     *
     * @param
     * @return java.util.Set<java.lang.String>
     * @author 高冷
     * @description:获取所有页面请求的url
     * @date 2021/12/9 17:37
     */
    Set<String> getAllUrl();
    /**
     *
     * @param menus
     * @return java.util.List<cn.hutool.core.lang.tree.Tree < java.lang.String>>
     * @author 高冷
     * @description:抽取的公共方法
     * @date 2021/12/7 8:54
     */
    List<Tree<String>> getTreeByMenus(List<Menu> menus);
    /**
     *
     * @param url
     * @return java.util.Set<java.lang.String>
     * @author 高冷
     * @description:
     * @date 2021/12/9 17:44
     */
    String getPermByUrl(String url);

    List<Tree<String>> getAllTreeMenuIds(Integer roleId);
}

